﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using JuegoImagenes.Models;
using JuegoImagenes.Repository;
using System.Web.Security;

namespace JuegoImagenes.Controllers
{
    [Authorize]
    public class JuegoController : Controller
    {
        private AdminRepository adminRepository = new AdminRepository();

        static public Random ran = new Random();

        public ActionResult Index()
        {
            ViewBag.Jugando = false;
            return View();
        }

        #region Revisar Respuesta
        public ActionResult RevisarRespuesta()
        {
            String categoria = Request["categoria"];
            int idImagen = int.Parse(Request["id_imagen"]);
            Imagen imagen = adminRepository.GetImagen(idImagen);
            String respuestaCorrecta = imagen.Respuesta;

            String respuestaEnviada = Request["respuestaUser"];

            if (respuestaCorrecta == respuestaEnviada)
            {
                MembershipUser usuario = Membership.GetUser();
                Perfil perfilUsuario = adminRepository.GetPerfil(usuario.UserName);
                perfilUsuario.Puntaje += 10;
                adminRepository.Save();
                ViewBag.Mensaje = "Respuesta correcta!";
                ViewBag.Jugando = true;
                ConseguirPuntaje();
                ConseguirImagen(categoria);
                return View("Index");
                // respuesta correcta, sumar puntaje y cargar otra imagen
            }
            else
            {
                ViewBag.Mensaje = "Respuesta incorrecta!";
                ViewBag.Jugando = true;
                ConseguirPuntaje();
                ConseguirImagen(categoria);
                return View("Index");
                // respuesta incorrecta, cargar otra imagen
            }
        }
        #endregion

        #region Mostra Pista
        public ActionResult MostrarPista()
        {
            int idImagen = int.Parse(Request["id_imagen"]);
            Imagen imagen = adminRepository.GetImagen(idImagen);
            ViewBag.Mensaje = "Pista: "+imagen.Pista;
            ViewBag.Imagen = imagen;
            ViewBag.Jugando = true;
            ConseguirPuntaje();
            return View("Index");
        }
        #endregion

        #region Conseguir Imagen
        public void ConseguirImagen(String categoria)
        {
            List<Imagen> ImagenesParaAdivinar = adminRepository.GetAllCategoria(categoria);
            int randomNum = ran.Next(0, ImagenesParaAdivinar.Count()); // el largo de la lista
            ViewBag.Imagen = ImagenesParaAdivinar[randomNum];
        }
        #endregion

        #region Conseguir Puntaje
        public void ConseguirPuntaje()
        {
            MembershipUser usuario = Membership.GetUser();
            Perfil perfilUsuario = adminRepository.GetPerfil(usuario.UserName);
            ViewBag.Puntaje = perfilUsuario.Puntaje;
        }
        #endregion

        #region Menu De Seleccion de Categoria
        public ActionResult AdivinarCategoria()
        {            
            String categoria = Request["categoria"];
            ViewBag.Jugando = true;
            ConseguirImagen(categoria); // viewbag con imagen
            ConseguirPuntaje(); // viewbag con datos de usuario

            return View("Index");
        }
        #endregion

    }
}